home *** CD-ROM | disk | FTP | other *** search
/ The Original Shareware 1.1 / The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso / 6 / clmfeb85.zip / BENMRK.MAT < prev    next >
Text File  |  1988-07-25  |  2KB  |  88 lines

  1.  
  2.  
  3.                       The Matrix Benchmark
  4.                        C Compiler Analysis
  5.                  February 1985 COMPUTER LANGUAGE
  6.  
  7. /*
  8. ** Matrix.c -- a benchmark based on the matrix multiplication
  9. ** program given by Jerry Pournelle in Byte October 1982 p. 254.
  10. **
  11. ** Type conversions have been made explicit with casts. Array
  12. ** and loop indices now start at 0.
  13. */
  14.  
  15. #define M     20
  16. #define N     20
  17. #define BELL  7
  18.  
  19. char gup;
  20. double summ, a[M][N], b[N][M], c[M][M];
  21.  
  22. main()
  23. {
  24.  
  25.     summ = 0.0;
  26.     printf("Hit any character to start\n");
  27.     gup = getchar();
  28.     
  29.     filla();
  30.     printf("\nA filled\n");
  31.     fillb();
  32.     printf("\nB filled\n");
  33.     fillc();
  34.     printf("\nC filled\n");
  35.     
  36.     matmult();
  37.     printf("\nMultiplied\n");
  38.     summit();
  39.     
  40.     printf("The sum is: %20f\n", summ);
  41.     putchar(BELL);
  42. }
  43.  
  44. filla()
  45. {
  46. int i, j;
  47.  
  48.     for (i=0; i < M; i++)
  49.         for (j = 0; j < N; j++)
  50.             a[i][j] = (double) (i+1) + (j+1);
  51. }
  52.  
  53. fillb()
  54. {
  55. int i, j;
  56.  
  57.     for (i=0; i < N; i++)è        for (j = 0; j < M; j++)
  58.             b[i][j] = (double) (int) (((i+1) + (j+1)) / (j+1));
  59. }
  60.  
  61. fillc()
  62. {
  63. int i, j;
  64.  
  65.     for (i=0; i < M; i++)
  66.         for (j = 0; j < M; j++)
  67.             c[i][j] = (double) 0;
  68. }
  69.  
  70. matmult()
  71. {
  72. int i, j, k;
  73.  
  74.     for (i = 0; i < M; i++)
  75.         for (j = 0; j < N; j++)
  76.             for (k = 0; k < M; k++)
  77.                 c[i][j] = c[i][j] + a[i][k]*b[k][j];
  78. }
  79.  
  80. summit()
  81. {
  82. int i, j;
  83.  
  84.     for (i = 0; i < M; i++)
  85.         for (j = 0; j < M; j++)
  86.             summ = summ + c[i][j];
  87. }
  88.